# @Time : 2020/9/8 14:09
# @Author : Fioman 
# @Phone : 13149920693
"""

给定一个字符串，请你找出其中不含有重复字符的 最长子串 的长度。

示例一:
输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc"，所以其长度为 3。

示例二:
输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b"，所以其长度为 1。

示例三:
输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke"，所以其长度为 3。
     请注意，你的答案必须是 子串 的长度，"pwke" 是一个子序列，不是子串。
"""


class Solution(object):
    # 这种写法是一个注释写法,告诉你参数应该是一个str,但是你传一个int进去也是可以的,返回值也是,告诉你返回值应该是int,但是你返回其他的也没有问题.
    # 方法1,自己最直观的理解,就是遍历找子串,然后统计长度.从第一个字符串开始
    def length_of_longes_sub_string_01(self, s: str) -> int:
        # 找到的符合要求的子串
        lenMax = 0  # 保存最大的长度
        if len(s) <= 1:
            return len(s)
        for index, c in enumerate(s):
            subStr = []
            subStr.append(c)
            if index < len(s) - 1:
                for c2 in s[(index + 1):]:
                    if c2 not in subStr:
                        subStr.append(c2)
                        if len(subStr) >= lenMax:
                            lenMax = len(subStr)
                    else:
                        break
        return lenMax if lenMax > 1 else 1



if __name__ == '__main__':
    strUsed = "bbbbbb"
    s = Solution()
    lenRes = s.length_of_longes_sub_string_01(strUsed)
    print(lenRes)
